Choisir ses outils pour l’automatisation –Transcription du webinaire
Ce billet s’inspire du webinaire de l’ATIR « Choisir ses outils pour l’automatisation », présenté par Peter Heath de la CENGN Academy. Cliquez ici pour voir le webinaire dans son entièreté.
Quelles questions doit-on se poser quand on envisage l’infrastructure en tant que code (IaC)?
- Qu’est-ce que l’infrastructure en tant que code (IaC)?
- Quels sont ses liens avec l’infonuagique?
- Quels en sont les objectifs?
- Quelles tâches peut-on automatiser et quels outils d’automatisation populaires trouve-t-on sur le marché?
Qu’est-ce que l’infrastructure en tant que code?
Fondamentalement, l’infrastructure en tant que code consiste à gérer l’infrastructure infotechnologique (IT) en rédigeant puis en exécutant des fichiers de code. Des fichiers de définition lisibles par machine engendrent des éléments de service virtuels comme des machines, des réseaux, des équilibreurs de charge, etc. Voyez-le ainsi : tout ce qui est « virtualisable » dans un centre de données moderne, les outils d’IaC peuvent le faire et en assurer la configuration. Puisqu’on travaille avec des fichiers de code, il est possible de réutiliser les outils de versionnage et de contrôle à la source dont on se sert déjà pour les autres codes sources, au sein de l’organisation.
Quels liens y a-t-il entre l’IaC et l’infonuagique?
L’IaC a joué un rôle capital dans l’avènement de l’infonuagique. Certes, les machines virtuelles ont permis l’exploitation de nombreux serveurs à partir d’un seul et même bloc matériel. Cependant, l’IaC a poussé les choses plus loin grâce à des outils qui autorisent un déploiement rapide de ces machines virtuelles ou d’autres ressources, en fonction des besoins de l’utilisateur, conférant une excellente élasticité à l’infrastructure de ce dernier. Au lieu de faire appel à une équipe d’exploitation pour obtenir des ressources situées sur l’infrastructure locale, le développeur crée une machine virtuelle, l’utilise puis s’en débarrasse en l’espace de quelques minutes, voire quelques secondes. Pareille souplesse est l’une des principales raisons qui explique la formidable expansion de l’infonuagique qu’on connaît aujourd’hui.
Bien sûr, les services d’infonuagique ont leurs propres outils à présent. Cependant, sachant combien l’utilisateur attache du prix à la marge de manœuvre, ces services ont intégré les outils d’IaC existants à leurs flux de tâches. Ils ont conçu des systèmes essentiellement commandés par des API. Les services d’infonuagique centrés sur des API permettent au fournisseur de surveiller son infrastructure interne avec ses propres outils, tout en laissant l’utilisateur choisir les outils qu’il préfère pour le provisionnement et la configuration. Ces ressources peuvent être créées avec les outils articulés sur les API ou directement, à partir de l’interface du service d’infonuagique.
Quels sont les objectifs de l’IaC?
Les objectifs de l’utilisateur qui songe à recourir à l’IaC varient. Nous en examinerons quatre.
Combiner changement et stabilité
L’IaC confère agilité, facilité d’adaptation et stabilité à l’infrastructure, ce qui satisfait les besoins du développeur et de l’exploitant.
Faire du changement une routine
Grâce à l’IaC, il est possible d’effectuer des modifications et de les surveiller rapidement, aisément et de façon fiable. Puisqu’on travaille avec des fichiers de code, les mises à niveau et la résolution des problèmes nécessitent moins de temps. L’exploitant atténue donc les risques de pannes futures.
Mieux contrôler la source
Les fichiers de code sont ce qu’ils sont. Les mêmes outils de contrôle à la source et de versionnage employés avec les fichiers de code des applications peuvent donc s’appliquer aux fichiers de code de l’infrastructure. On disposera également d’une piste de vérification recensant tous les changements apportés à l’infrastructure, ce qui brossera un meilleur tableau de son évolution actuelle et future. Si quelque chose va de travers pour une raison quelconque, il suffira de remonter la piste jusqu’à un point où l’infrastructure était stable.
Gagner en productivité
Les outils d’IaC simplifient certaines tâches répétitives qui drainent les ressources d’exploitation IT. Grâce à eux, l’équipe d’exploitation pourra se concentrer sur les tâches essentielles et aura du temps pour se perfectionner.
Que peut-on automatiser?
La première question qui vient à l’esprit quand on envisage l’IaC est : quelles sont les tâches qui peuvent être automatisées? Examinons les principales.
Provisionnement
- Par là on entend l’aménagement des ressources virtuelles (machines, réseaux, unités de stockage et conteneurs). L’exploitant crée des modèles réutilisables et s’en sert constamment pour mettre facilement en place ces composants, en toute confiance.
Configuration
- L’étape suivante est souvent la configuration. Maintenant qu’une machine virtuelle a été créée, il faut y installer une application quelconque et la configurer. Malheureusement, il arrive que l’application soit très complexe, avec des dépendances, des ports, des entrées et des autorisations bien à elle. Des outils qui prennent en charge la configuration faciliteront la gestion des applications, peu importe leur complexité. Ils vous permettront aussi de vérifier l’état de l’application en temps réel, quand l’hôte qui l’héberge subit des modifications.
Déploiement des applications
- Avant d’en arriver là, on devra automatiser les essais lors du développement de l’application. Les outils d’IaC permettent de tester à la fois l’application et son environnement pour préserver la cohérence à ces deux étapes et éviter les modifications trop radicales.
Orchestration
- L’avènement des microservices a débouché sur des applications très complexes qu’on étale sur de nombreux hôtes. On aura absolument besoin d’outils d’orchestration pour suivre et automatiser le fonctionnement d’une application de ce genre sur les systèmes répartis.
Parmi les tâches qui précèdent, le provisionnement et la configuration sont celles que vous voudrez d’abord automatiser, mais le déploiement d’une application et l’orchestration pourront l’être également en partie.
Outils d’IaC populaires
Outil de provisionnement qui effectue aussi une configuration de base | |
Outil de configuration pouvant également s’occuper en partie du provisionnement | |
Solution indispensable pour l’utilisation de conteneurs | |
Outil d’orchestration permettant de gérer et de coordonner un déploiement massif de conteneurs | |
Outil de configuration | |
Outil de configuration | |
Outil de configuration | |
Outil de provisionnement conçu pour fonctionner avec VMware, virtualbox, AWS et les systèmes de virtualisation de certains fournisseurs de services d’infonuagique |
À prendre en considération
Nous avons vu ce qu’est l’IaC et ce qu’elle permet de réaliser. La question suivante à se poser est : quels outils devrais-je envisager? Les réponses sont nombreuses. Dans ce billet, nous nous attarderons à trois d’entre elles.
Tâche
Provisionner ou configurer – Que voulez-vous faire, au juste?
Comme nous l’avons déjà mentionné, le provisionnement et la configuration sont les deux tâches principales que vous voudrez sans doute automatiser. Bien qu’elles se chevauchent dans une certaine mesure, nous les examinerons séparément.
Certains outils se prêtent à merveille au provisionnement, c’est-à-dire à la création et à la suppression de ressources. Ces outils créeront des machines virtuelles, aménageront de l’espace de stockage, procèderont à quelques changements de nature générale, puis, la tâche terminée, démoliront tout.
Les outils qui gèrent la configuration installent des logiciels sur les ressources existantes puis les prennent en charge. Mettre des logiciels à niveau, fixer les règles du pare-feu, revenir à la version antérieure d’une application en sont des exemples. Ces outils exécutent des commandes simultanément sur de nombreuses machines, solution de loin préférable à celle qui consiste à prier quelqu’un de s’installer devant un terminal pour modifier chaque machine tour à tour.
Peut-être devrez-vous effectuer un peu de provisionnement et un peu de configuration. Si c’est le cas, mieux vaut choisir un outil pour le provisionnement et un deuxième pour la configuration. Privilégiez toujours l’outil qui convient le mieux à la tâche au lieu d’en prendre un qui n’a pas été spécifiquement conçu pour cela.
Communication
Pousser ou tirer – Comment l’outil communique-t-il?
Comme on le voit ci-dessous, les deux méthodes de communication s’adressent à une plateforme client-serveur. Dans le premier cas, le serveur pousse la configuration vers le système de destination. Cette méthode permet d’économiser les ressources de calcul et les ressources réseau, car l’exploitant ne les utilise que lorsqu’il effectue une modification sur le serveur, puis l’élargit aux nœuds clients.
Avec la méthode du tirer, c’est le nœud, ou la machine client configurée, qui réclame la mise à niveau ou une modification au serveur. Le nœud vérifie périodiquement l’état qui a été configuré ou qui est privilégié sur le serveur central, le compare à son propre état et, si les deux varient, réclame une correction ou une mise à niveau. On comprend tout de suite qu’ici, l’automatisation est plus grande. Cependant, cette méthode nécessite aussi plus de ressources (unité de traitement centrale, réseau) et accroît la complexité du système.
Langage
Langage procédural ou déclaratif – Dans quel langage l’outil rédige-t-il les scripts?
Les deux principaux langages employés pour l’automatisation sont le langage procédural et le langage déclaratif. Le premier applique le script une étape à la fois, sans tenir compte de l’état actuel de l’infrastructure. Essentiellement, chaque ligne du script correspond à une commande. En revanche, le langage déclaratif expose l’état final souhaité et laisse l’outil procéder à la mise en œuvre. On dit « voici ce que je veux » plutôt que « fais ceci ou cela », comme dans le langage procédural. L’image ci-dessous fait ressortir cette différence : le script de gauche vient d’Ansible et celui de droite, de Terraform. Les deux créent une instance sur AWS, en indiquant l’image à utiliser et la nature de l’instance.
Vous remarquerez que, dans un cas aussi simple que celui-ci, les deux scripts présentent de grandes similitudes. Il y a une numération, l’indication d’une image et l’identification de l’instance désirée. Sur une infrastructure vierge, le script d’Ansible créera deux machines virtuelles, comme le fera le script de Terraform. Examinons cependant le scénario suivant : remplaçons deux par cinq dans les deux scripts. Ils sont similaires et conçus pour créer cinq machines virtuelles. Mais supposons que deux machines virtuelles ont déjà été créées sur l’infrastructure vierge, puis que vous appliquez le script pour en créer cinq autres. Que se passera-t-il?
La question
Combien y aura-t-il de machines virtuelles avec le script d’Ansible? Et combien avec le script de Terraform?
La réponse
Le script d’Ansible aboutira à sept machines virtuelles, mais celui de Terraform n’en produira que cinq.
En résumé
L’automatisation est une méthode capitale pour gagner en efficacité et libérer du personnel technique qui pourra améliorer produits et services. Avec une bonne planification et si on répond aux principales questions qui précèdent, l’infrastructure en tant que code facilitera l’automatisation et pourrait avoir un impact très positif sur l’entreprise!
Regardez la démonstration pour en savoir plus.
Pour en apprendre davantage sur le programme Nuage de l’ATIR et ce qu’il peut apporter à l’entreprise, visitez le site https://www.canarie.ca/fr/nuage/.
Pour en savoir plus sur la CENGN Academy et les autres cours offerts par Peter Heath et son équipe, visitez https://www.cengn.ca/services/cengn-academy/
Un mot sur la CENGN Academy
Le CENGN est un organisme sans but lucratif qui s’est donné pour mission de faire progresser de manière générale les innovations technologiques pour rendre le Canada plus prospère. Outre des services de commercialisation, l’organisation se spécialise dans le perfectionnement, la prestation de cours techniques en infonuagique et la certification de professionnels et d’étudiants canadiens dans le cadre du programme de formation de la CENGN Academy.
La CENGN Academy est un programme de formation pancanadien ayant pour objectif de combler le fossé au niveau des compétences en infonuagique et en réseautique signalé par les entreprises les plus avancées. En inculquant les connaissances les plus pertinentes aux professionnels chevronnés, aux nouveaux diplômés et aux étudiants dans une des industries qui connaît une des expansions les plus rapides dans le monde, la CENGN Academy aide les effectifs des entreprises TIC canadiennes à devenir internationalement plus compétitives.
Pour en savoir plus sur la CENGN Academy et les cours que proposent Peter Heath et son équipe, visitez https://www.cengn.ca/services/cengn-academy/